package controller

import (
	"VideoManageSystem/internal/service"
	"errors"

	"github.com/gin-gonic/gin"
	"gorm.io/gorm"
)

func UpdateVideoMessage(c *gin.Context) {
	var userInput struct {
		ID      string `json:"id"`
		Name    string `json:"name"`
		Content string `json:"content"`
	}

	// 解析请求体
	if err := c.ShouldBindJSON(&userInput); err != nil {
		c.JSON(400, gin.H{
			"code":    400,
			"message": "参数错误；错误：" + err.Error(),
		})
		return
	}

	// 验证 ID 是否为空
	if userInput.ID == "" {
		c.JSON(403, gin.H{
			"code":    1,
			"message": "用户 ID 不能为空",
		})
		return
	}

	// 根据 ID 查询视频是否存在
	video, err := service.GetVideoByID(userInput.ID)
	if err != nil {
		if errors.Is(err, gorm.ErrRecordNotFound) {
			c.JSON(403, gin.H{
				"code":    2,
				"message": "该账号不存在，无法更新信息；错误：" + err.Error(),
			})
		} else {
			c.JSON(500, gin.H{
				"code":    500,
				"message": "服务器内部错误，信息更新失败，请稍后再试；错误：" + err.Error(),
			})
		}
		return
	}

	if userInput.Name != "" {
		video.Name = userInput.Name
	}

	if userInput.Content != "" {
		video.Content = userInput.Content
	}

	// 将更新后的用户信息保存到数据库
	if err := service.UpdateVideo(video); err != nil {
		c.JSON(500, gin.H{
			"code":    500,
			"message": "系统错误，信息更新失败，请稍后再试；错误：" + err.Error(),
		})
		return
	}

	c.JSON(200, gin.H{
		"code":    200,
		"message": "视频信息更新成功",
	})
}
